package com.tortuousroad.framework.spring.web.bind.support;

import org.springframework.util.StringUtils;

import java.beans.PropertyEditorSupport;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

/**
 * @author 孙许
 * @date 2018-07-09
 * @description 日期转换，将配置文件中日期字符串转换为相应的对象
 * 该知识点参考《精通Spring4.x》 189页自定义属性编辑器
 */
public class DateConvertEditor extends PropertyEditorSupport {

//    private SimpleDateFormat timestampFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//    private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

    // 使用java8的时间日期
    DateTimeFormatter timestampFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    @Override
    public void setAsText(String text) {
        if (StringUtils.hasLength(text)) {
            if (text.indexOf(":") == -1 && text.length() == 10) {
//                    setValue(this.dateFormat.parse(text));
                setValue(LocalTime.parse(text, dateFormat));
            } else if (text.indexOf(":") > 0 && text.length() == 19) {
//                    setValue(this.timestampFormat.parse(text));
                setValue(LocalDateTime.parse(text, timestampFormat));
            }
        }
    }
}
